Virtualization is used in datacenters for the hosting of business services, which may be realized with multiple applications, because virtualization offers increased server utilization and management capabilities. Typically, a distributed computing network includes a plurality of server and client devices connected via a network in order to provide a business service to customers by using the applications and clients. For example, an Airlines Ticketing System is a business service provided to customers to book tickets, search airlines, and generate reports. Such a business service may be realized by deploying the applications across a number of tiers (e.g., a presentation tier, web-server tier, database tier, reports generation tier). In one example, a first server associated with a second tier may host the web-server application, and a second server in tier below the first server may host the database associated with the web-server application. The first and second servers may be running on virtual machines (VMs). A virtual machine manager (VMM) or hypervisor may divide its physical hardware resources and allocate parts of the hardware resources to the first VM server and the second VM database server, for example. The resources of each VM server may include a number of resources, such as a processor or computer processing unit (CPU), memory or cache, and disk, and possibly other resources. Each VM server may run on a virtual imitation of the hardware layer with a guest operating system and applications executing on the guest operating system as if the VM is operating on real physical resources.
When the customer application is executing one or more resource demanding tasks (e.g., handling a relatively large amount of records) across the VM servers, the system may suffer from spikes or resource starvation situations. When executing a resource demanding task, the usage of the CPU and memory may exceed 100%, which may lead to resource starvation situations and slow down all the tasks in the affected servers, as well as dependent VMs in other tiers and the entire customer business service application. Conventional methods utilize extrinsic monitoring based techniques on the resources to repair resource starvations. However, these extrinsic monitoring based techniques are reactive mechanisms that increase CPU or memory, and do not react in a relatively sufficient amount of time to suppress the sudden spikes. Further, these techniques may repair the resource starvation issue after at least some damage is done to the system. Furthermore, resource starvation situations that occur in one VM server, e.g., the first VM server, may cause prolonged non-responsiveness, cascaded problems with dependent VM servers in other tiers, e.g., the second VM database server and entire customer business service.